home *** CD-ROM | disk | FTP | other *** search
/ Atari Forever 4 / Atari Forever 4.zip / Atari Forever 4.iso / PD_THEMA / CPX / GEMSOUND / SOURCE / CPX.H < prev    next >
Text File  |  1998-03-14  |  5KB  |  187 lines

  1. /*  CPX.H
  2.  *  Headerdatei zur Erzeugung von CPX-Modulen
  3.  *
  4.  *  aus: GEM Sound
  5.  *       TOS Magazin
  6.  *
  7.  *  (c)1992 by Richard Kurz
  8.  *  Vogelherdbogen 62
  9.  *  7992 Tettnang
  10.  *  Fido 2:241/7232
  11.  *  Erstellt mit Pure C
  12.  */
  13.  
  14. /* So sieht der Kopf eines CPX-Moduls aus   */
  15. typedef struct
  16. {
  17.     UWORD   magic;
  18.     struct
  19.     {
  20.         unsigned reserved : 13;
  21.         unsigned ram_resident : 1;
  22.         unsigned boot_init : 1;
  23.         unsigned set_only  : 1;
  24.     } flags;
  25.     LONG    cpx_id;
  26.     UWORD   cpx_version;
  27.     char    i_text[14];
  28.     UWORD   icon[48];
  29.     struct
  30.     {
  31.         unsigned i_color :4;
  32.         unsigned reserved : 4;
  33.         unsigned i_char : 8;
  34.     } i_info;
  35.     char    text[18];
  36.     struct
  37.     {
  38.         unsigned c_board : 4;
  39.         unsigned c_text : 4;
  40.         unsigned pattern : 4;
  41.         unsigned c_back : 4;
  42.     } t_info;
  43.     char    buffer[64];
  44.     char    reserved[306];
  45. }   CPXHEAD;
  46.  
  47. /* Mausparameter                                */
  48. typedef struct
  49. {
  50.     WORD x;
  51.     WORD y;
  52.     WORD buttons;
  53.     WORD kstate;
  54. } MRETS;
  55.  
  56. /* Struktur zur Verwaltung von CPX-Modulen      */
  57. typedef struct cpxlist
  58. {
  59.         char f_name[14];
  60.         WORD head_ok;
  61.         WORD segm_ok;
  62.         struct
  63.         {
  64.                 void *text_seg;
  65.                 long len_text;
  66.                 void *data_seg;
  67.                 long len_data;
  68.                 void *bss_seg;
  69.                 long len_bss;
  70.         } *segm;
  71.         struct cpxlist *next;
  72.         CPXHEAD header;
  73. } CPX_LIST;
  74.  
  75. /* Funktionen und Flags die von XControl zur Verfügung  */
  76. /* gestellt werden.                                     */
  77. typedef struct
  78. {
  79.     WORD    handle;
  80.     WORD    booting;
  81.     WORD    reserved;
  82.     WORD    SkipRshFix;
  83.  
  84.     CPX_LIST *  cdecl (*get_cpx_list)(void);
  85.     WORD cdecl  (*save_header)(CPX_LIST *header);
  86.  
  87.     void cdecl  (*rsh_fix)(WORD num_objs,WORD num_frstr,
  88.                     WORD num_frimg, WORD num_tree,
  89.                     OBJECT *rs_object, TEDINFO *rs_tedinfo,
  90.                     char *rs_strings[], ICONBLK *rs_iconblk,
  91.                     BITBLK *rs_bitblk, long *rs_frstr,
  92.                     long *rs_frimg, long *rs_trindex,
  93.                     struct foobar *rs_imdope);
  94.  
  95.     void cdecl  (*rsh_obfix)(OBJECT *tree, WORD ob);
  96.  
  97.     WORD cdecl  (*Popup)(char *items[],WORD num,
  98.                 WORD def_item,WORD font,
  99.                 GRECT *up, GRECT *world);
  100.  
  101.     void cdecl  (*Sl_size)(OBJECT *tree, WORD base,
  102.                 WORD slider, WORD entrys, WORD vis_ent,
  103.                 WORD hvflag, WORD min_pix);
  104.  
  105.     void cdecl  (*Sl_x)(OBJECT *tree, WORD base, WORD slider,
  106.                 WORD value, WORD min, WORD max,
  107.                 void (*foo)(void));
  108.  
  109.     void cdecl  (*Sl_y)(OBJECT *tree, WORD base, WORD slider,
  110.                 WORD value, WORD min, WORD max,
  111.                 void (*foo)(void));
  112.  
  113.     void cdecl  (*Sl_arrow)(OBJECT *tree, WORD base,
  114.                 WORD slider, WORD obj, WORD inc, WORD min,
  115.                 WORD max, WORD *value, WORD hvflag,
  116.                 void (*foo)(void));
  117.  
  118.     void cdecl  (*Sl_dragx)(OBJECT *tree, WORD base,
  119.                 WORD slider, WORD min, WORD max,
  120.                 WORD *value, void (*foo)(void));
  121.  
  122.     void cdecl  (*Sl_dragy)(OBJECT *tree, WORD base,
  123.                 WORD slider, WORD min, WORD max,
  124.                 WORD *value, void (*foo)(void));
  125.  
  126.     WORD cdecl  (*Xform_do)(OBJECT *tree,WORD eobj,
  127.                 WORD *msg);
  128.  
  129.     GRECT * cdecl   (*GetFirstRect)(GRECT *prect);
  130.  
  131.     GRECT * cdecl   (*GetNextRect)(void);
  132.  
  133.     void cdecl  (*Set_Evnt_Mask)(WORD mask, MOBLK *m1,
  134.                 MOBLK *m2, long time);
  135.  
  136.     WORD cdecl  (*XGen_Alert)(WORD al);
  137.  
  138.     WORD cdecl  (*CPX_Save)(void *ptr, long bytes);
  139.  
  140.     void * cdecl    (*Get_Buffer)(void);
  141.  
  142.     WORD cdecl  (*getcookie)(long cookie, long *p_value);
  143.  
  144.     WORD        Country_Code;
  145.  
  146.     void cdecl  (*MFsave)(WORD flag, MFORM *mf);
  147.  
  148. } XCPB;
  149.  
  150. /* Funktionen die vom CPX-Modul zur Verfügung   */
  151. /* gestellt werden.                             */
  152. typedef struct
  153. {
  154.     WORD cdecl  (*cpx_call)(GRECT *rect);
  155.  
  156.     void cdecl  (*cpx_draw)(GRECT *clip);
  157.  
  158.     void cdecl  (*cpx_wmove)(GRECT *work);
  159.  
  160.     void cdecl  (*cpx_timer)(WORD *quit);
  161.  
  162.     void cdecl  (*cpx_key)(WORD kstate, WORD key, WORD *quit);
  163.  
  164.     void cdecl  (*cpx_button)(MRETS *mrets, WORD nclicks,
  165.                  WORD *quit);
  166.  
  167.     void cdecl  (*cpx_m1)(MRETS *mrets, WORD *quit);
  168.  
  169.     void cdecl  (*cpx_m2)(MRETS *mrets, WORD *quit);
  170.  
  171.     WORD cdecl  (*cpx_hook)(WORD event, WORD *msg, 
  172.                 MRETS *mrets, WORD *key, WORD *nclicks);
  173.  
  174.     void cdecl  (*cpx_close)(WORD flag);
  175. } CPXINFO;
  176.  
  177. /* Nützliche Definitionen               */
  178. #define SAVE_DEFAULTS   0
  179. #define MEM_ERR         1
  180. #define FILE_ERR        2
  181. #define FILE_NOT_FOUND  3
  182.  
  183. #define MFSAVE      1
  184. #define MFRESTORE   0
  185.  
  186. #define CT_KEY  53
  187.